package com.agua.enturno.vista.dto.assemblers;

import com.agua.enturno.excepciones.ExcepcionDeReglaDelNegocio;
import com.agua.enturno.modelo.agenda.JornadaLaboralHabitual;
import com.agua.enturno.vista.dto.JornadaLaboralHabitualDTO;

import java.util.ArrayList;
import java.util.List;
import java.util.SortedSet;

public class JornadaLaboralHabitualAssembler extends NullAwareSimpleAssembler<JornadaLaboralHabitual, JornadaLaboralHabitualDTO>{

	@Override
	protected JornadaLaboralHabitualDTO internalAssemble(JornadaLaboralHabitual jornadaLaboralHabitual) {
		return new JornadaLaboralHabitualDTO(
				jornadaLaboralHabitual.getAgenda().getId(),
				jornadaLaboralHabitual.getId(), 
				jornadaLaboralHabitual.getDiaYHoraDeInicio(), 
				jornadaLaboralHabitual.getDiaYHoraDeFin(),
				jornadaLaboralHabitual.getDuracionDeLosTurnos(), 
				jornadaLaboralHabitual.getVacantesPorTurno());
	}

	@Override
	protected JornadaLaboralHabitual internalDisassemble(JornadaLaboralHabitualDTO jornadaHabitualDTO) 
			throws ExcepcionDeReglaDelNegocio {
		
		return new JornadaLaboralHabitual(
				jornadaHabitualDTO.getDiaYHoraDeInicio(), 
				jornadaHabitualDTO.getDiaYHoraDeFin(), 
				jornadaHabitualDTO.getDuracionDeLosTurnos(),
				jornadaHabitualDTO.getVacantesPorTurno());
	}
	
	public List<JornadaLaboralHabitualDTO> assemble(SortedSet<JornadaLaboralHabitual> jornadasHabituales) {
		
		List<JornadaLaboralHabitualDTO> jornadasHabitualesDTO = new ArrayList<JornadaLaboralHabitualDTO>();
		
		for (JornadaLaboralHabitual jornadaHabitual : jornadasHabituales) 
			jornadasHabitualesDTO.add(assemble(jornadaHabitual));
		
		return jornadasHabitualesDTO;
	}
	
}
